package monster.flight.admin.manager.imp.xtgl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import monster.comm.exception.InvalidParameterException;

import monster.comm.log.ILog;
import monster.comm.log.LogService;
import monster.comm.util.Tool;
import monster.flight.admin.manager.service.xtgl.KeyService;
import monster.flight.comm.entity.dao.KeytableDAO;
import monster.flight.comm.entity.vo.Keytable;

/**
 * 创建信息=============
 * 类名: monster.flight.admin.manager.imp.xtgl.KeyServiceImp
 * 类作用描述: 此类负责主键生成器的相关服务
 * 创建人： wanghong 
 * 创建时间： 2013-1-11 下午01:15:50
 * 修改信息1=============
 * 修改类型:   增加3个方法作者是lzy  //1.修改bug 2.业务变化修改
 * 修改描述: 
 * 修改人：  lzy
 * 修改时间:2013-1-11 上午11:05:00
 * 
 */

public class KeyServiceImp implements KeyService{
	private static ILog log = LogService.getLog(KeyServiceImp.class);
	private KeytableDAO keytableDAO;
	

	public KeytableDAO getKeytableDAO() {
		return keytableDAO;
	}

	public void setKeytableDAO(KeytableDAO keytableDAO) {
		this.keytableDAO = keytableDAO;
	}

	@Override
	public Keytable getPoByID(String id) throws Exception {
		
		Tool.NullException(id, "id不能为null");
		return keytableDAO.getPoByID(id);
	}
	@Override
	public void update(Keytable keytable) throws Exception {
		
		Tool.NullException(keytable, "po不能为null");
		Tool.NullException(keytable.getKeyname(), "keytable主键不能为null");
	   keytableDAO.update(keytable);
		
	}

	  /**
	    *@author lzy
	   *@Description: 如果存在Keytable.keyname则根据主键管理表的Keytable.keyname查询，ELSE查询所有数据   
	   *@param po
	   *@throws Exception  
	   *@return List<Keytable>
	    */	
	public List<Keytable> selectPage(Map<String, Object> map)throws Exception {
		List<Keytable> list=new ArrayList<Keytable>();
		Tool.NullException(map, "map不能为null");
		Tool.NullException(map.get("condition"), "condition不能为null");
		list = keytableDAO.selectPage(map);
		return list;
	}

	  /**
	   *@author lzy
	   *@Description: 增加主键表数据
	   *@param po
	   *@throws Exception  
	   *@return void    
	    */
	public void insert(Keytable keytable) throws Exception {
		Tool.NullException(keytable, "keytable po 不能为null");
		Tool.NullException(keytable.getKeyname(), "keytable 主键 不能为null");
		//true存在 false不存在
		if(key_Exist(keytable.getKeyname())){
			Tool.UniqueException("keyname已经存在,请换一个!");
		}
		keytableDAO.insert(keytable);
	}

	   /**
	   *@author lzy
	   *@Description: 更新主键管理表数据
	   *@param po
	   *@throws Exception  
	   *@return void    
	    */
	public void updateAllByKeyname(Keytable keytable) throws Exception {
		
		Tool.NullException(keytable, "keytable po 不能为null");
		Tool.NullException(keytable.getKeyname(), "keytable 主键 不能为null");
		keytableDAO.updateAllByKeyname(keytable);
		
	}

	 /**	
	*@Description: 根据主键删除记录
	*@param id
	*@return void
	*@throws Exception
	*/
	public void deleteByID(String id) throws Exception {
		
		Tool.NullException(id, "主键不能为null");
		 keytableDAO.deleteByID(id);
		
	}

	

	/**
	  * 分页使用
	  * @param po
	  * @return
	  * @throws Exception
	  */
	public int getRowCount(Keytable keytable) throws Exception {		
		Tool.NullException(keytable, "po:keytable不能为null");
		int i=keytableDAO.getRowCount(keytable);
		return i;
	}

	/**
	  * 校验keyname是否存在
	  * @param keyname
	  * @return true存在 false不存在
	  * @throws Exception
	  */
	public boolean key_Exist(String keyname) throws Exception {
		Tool.NullException(keyname, "keyname不能为null");
		int i=keytableDAO.key_Exist(keyname);
		return i>0?true:false;
	}

}
